package com.christina.engine.processing;

import com.christina.engine.processing.model.ProcessingContext;
import com.christina.engine.processing.model.ProcessingResult;

/**
 * 请求处理器接口
 * 定义责任链模式中处理器的基本行为
 */
public interface RequestProcessor {
    
    /**
     * 处理请求的核心方法
     * 
     * @param context 处理上下文，包含请求信息和处理状态
     * @return 处理结果，包含成功标志、是否继续处理等信息
     */
    ProcessingResult process(ProcessingContext context);
    
    /**
     * 设置责任链中的下一个处理器
     * 
     * @param next 下一个处理器
     */
    void setNext(RequestProcessor next);
    
    /**
     * 获取责任链中的下一个处理器
     * 
     * @return 下一个处理器，如果没有则返回null
     */
    RequestProcessor getNext();
    
    /**
     * 获取处理器名称
     * 
     * @return 处理器名称
     */
    String getName();
    
    /**
     * 检查处理器是否支持处理当前上下文
     * 
     * @param context 处理上下文
     * @return 如果支持处理返回true，否则返回false
     */
    boolean supports(ProcessingContext context);
    
    /**
     * 获取处理器的执行顺序
     * 数值越小，执行优先级越高
     * 
     * @return 执行顺序
     */
    int getOrder();
    
    /**
     * 检查处理器是否已启用
     * 
     * @return 如果启用返回true，否则返回false
     */
    boolean isEnabled();
}